home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / RTLWIN32.PAK / WINNETWK.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  23KB  |  823 lines

  1. /*++
  2.  
  3. Copyright (c) 1991-1996  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     winnetwk.h
  8.  
  9. Abstract:
  10.  
  11.     Standard WINNET Header File for WIN32
  12.  
  13. Environment:
  14.  
  15.     User Mode -Win32
  16.  
  17. Notes:
  18.  
  19.     optional-notes
  20.  
  21. --*/
  22.  
  23. #ifndef _WINNETWK_
  24. #define _WINNETWK_
  25. #pragma option -b
  26.  
  27.  
  28. #ifdef __cplusplus
  29. extern "C" {
  30. #endif
  31.  
  32.  
  33. //
  34. // Network types
  35. //
  36.  
  37. #define     WNNC_NET_MSNET      0x00010000
  38. #define     WNNC_NET_LANMAN     0x00020000
  39. #define     WNNC_NET_NETWARE    0x00030000
  40. #define     WNNC_NET_VINES      0x00040000
  41. #define     WNNC_NET_10NET      0x00050000
  42. #define     WNNC_NET_LOCUS      0x00060000
  43. #define     WNNC_NET_SUN_PC_NFS 0x00070000
  44. #define     WNNC_NET_LANSTEP    0x00080000
  45. #define     WNNC_NET_9TILES     0x00090000
  46. #define     WNNC_NET_LANTASTIC  0x000A0000
  47. #define     WNNC_NET_AS400      0x000B0000
  48. #define     WNNC_NET_FTP_NFS    0x000C0000
  49. #define     WNNC_NET_PATHWORKS  0x000D0000
  50. #define     WNNC_NET_LIFENET    0x000E0000
  51. #define     WNNC_NET_POWERLAN   0x000F0000
  52. #define     WNNC_NET_BWNFS      0x00100000
  53. #define     WNNC_NET_COGENT     0x00110000
  54. #define     WNNC_NET_FARALLON   0x00120000
  55. #define     WNNC_NET_APPLETALK  0x00130000
  56. #define     WNNC_NET_INTERGRAPH 0x00140000
  57. #define     WNNC_NET_SYMFONET   0x00150000
  58. #define     WNNC_NET_CLEARCASE  0x00160000
  59.  
  60.  
  61. //
  62. //  Network Resources.
  63. //
  64.  
  65. #define RESOURCE_CONNECTED      0x00000001
  66. #define RESOURCE_GLOBALNET      0x00000002
  67. #define RESOURCE_REMEMBERED     0x00000003
  68. #if(WINVER >= 0x0400)
  69. #define RESOURCE_RECENT         0x00000004
  70. #define RESOURCE_CONTEXT        0x00000005
  71. #endif /* WINVER >= 0x0400 */
  72.  
  73. #define RESOURCETYPE_ANY        0x00000000
  74. #define RESOURCETYPE_DISK       0x00000001
  75. #define RESOURCETYPE_PRINT      0x00000002
  76. #if(WINVER >= 0x0400)
  77. #define RESOURCETYPE_RESERVED   0x00000008
  78. #endif /* WINVER >= 0x0400 */
  79. #define RESOURCETYPE_UNKNOWN    0xFFFFFFFF
  80.  
  81. #define RESOURCEUSAGE_CONNECTABLE   0x00000001
  82. #define RESOURCEUSAGE_CONTAINER     0x00000002
  83. #if(WINVER >= 0x0400)
  84. #define RESOURCEUSAGE_NOLOCALDEVICE 0x00000004
  85. #define RESOURCEUSAGE_SIBLING       0x00000008
  86. #define RESOURCEUSAGE_ATTACHED      0x00000010
  87. #define RESOURCEUSAGE_ALL           (RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER | RESOURCEUSAGE_ATTACHED)
  88. #endif /* WINVER >= 0x0400 */
  89. #define RESOURCEUSAGE_RESERVED      0x80000000
  90.  
  91. #define RESOURCEDISPLAYTYPE_GENERIC        0x00000000
  92. #define RESOURCEDISPLAYTYPE_DOMAIN         0x00000001
  93. #define RESOURCEDISPLAYTYPE_SERVER         0x00000002
  94. #define RESOURCEDISPLAYTYPE_SHARE          0x00000003
  95. #define RESOURCEDISPLAYTYPE_FILE           0x00000004
  96. #define RESOURCEDISPLAYTYPE_GROUP          0x00000005
  97. #if(WINVER >= 0x0400)
  98. #define RESOURCEDISPLAYTYPE_NETWORK        0x00000006
  99. #define RESOURCEDISPLAYTYPE_ROOT           0x00000007
  100. #define RESOURCEDISPLAYTYPE_SHAREADMIN     0x00000008
  101. #define RESOURCEDISPLAYTYPE_DIRECTORY      0x00000009
  102. #endif /* WINVER >= 0x0400 */
  103. #define RESOURCEDISPLAYTYPE_TREE           0x0000000A
  104. #if(WINVER >= 0x0400)
  105. #define RESOURCEDISPLAYTYPE_NDSCONTAINER   0x0000000B
  106. #endif /* WINVER >= 0x0400 */
  107.  
  108. typedef struct  _NETRESOURCEA {
  109.     DWORD    dwScope;
  110.     DWORD    dwType;
  111.     DWORD    dwDisplayType;
  112.     DWORD    dwUsage;
  113.     LPSTR    lpLocalName;
  114.     LPSTR    lpRemoteName;
  115.     LPSTR    lpComment ;
  116.     LPSTR    lpProvider;
  117. }NETRESOURCEA, *LPNETRESOURCEA;
  118. typedef struct  _NETRESOURCEW {
  119.     DWORD    dwScope;
  120.     DWORD    dwType;
  121.     DWORD    dwDisplayType;
  122.     DWORD    dwUsage;
  123.     LPWSTR   lpLocalName;
  124.     LPWSTR   lpRemoteName;
  125.     LPWSTR   lpComment ;
  126.     LPWSTR   lpProvider;
  127. }NETRESOURCEW, *LPNETRESOURCEW;
  128. #ifdef UNICODE
  129. typedef NETRESOURCEW NETRESOURCE;
  130. typedef LPNETRESOURCEW LPNETRESOURCE;
  131. #else
  132. typedef NETRESOURCEA NETRESOURCE;
  133. typedef LPNETRESOURCEA LPNETRESOURCE;
  134. #endif // UNICODE
  135.  
  136.  
  137. //
  138. //  Network Connections.
  139. //
  140.  
  141. #define NETPROPERTY_PERSISTENT       1
  142.  
  143. #define CONNECT_UPDATE_PROFILE      0x00000001
  144. #define CONNECT_UPDATE_RECENT       0x00000002
  145. #define CONNECT_TEMPORARY           0x00000004
  146. #define CONNECT_INTERACTIVE         0x00000008
  147. #define CONNECT_PROMPT              0x00000010
  148. #define CONNECT_NEED_DRIVE          0x00000020
  149. #if(WINVER >= 0x0400)
  150. #define CONNECT_REFCOUNT            0x00000040
  151. #define CONNECT_REDIRECT            0x00000080
  152. #define CONNECT_LOCALDRIVE          0x00000100
  153. #define CONNECT_CURRENT_MEDIA       0x00000200
  154. #define CONNECT_DEFERRED            0x00000400
  155. #define CONNECT_RESERVED            0xFF000000
  156. #endif /* WINVER >= 0x0400 */
  157.  
  158.  
  159. DWORD APIENTRY
  160. WNetAddConnectionA(
  161.      LPCSTR   lpRemoteName,
  162.      LPCSTR   lpPassword,
  163.      LPCSTR   lpLocalName
  164.     );
  165. DWORD APIENTRY
  166. WNetAddConnectionW(
  167.      LPCWSTR   lpRemoteName,
  168.      LPCWSTR   lpPassword,
  169.      LPCWSTR   lpLocalName
  170.     );
  171. #ifdef UNICODE
  172. #define WNetAddConnection  WNetAddConnectionW
  173. #else
  174. #define WNetAddConnection  WNetAddConnectionA
  175. #endif // !UNICODE
  176.  
  177. DWORD APIENTRY
  178. WNetAddConnection2A(
  179.      LPNETRESOURCEA lpNetResource,
  180.      LPCSTR       lpPassword,
  181.      LPCSTR       lpUserName,
  182.      DWORD          dwFlags
  183.     );
  184. DWORD APIENTRY
  185. WNetAddConnection2W(
  186.      LPNETRESOURCEW lpNetResource,
  187.      LPCWSTR       lpPassword,
  188.      LPCWSTR       lpUserName,
  189.      DWORD          dwFlags
  190.     );
  191. #ifdef UNICODE
  192. #define WNetAddConnection2  WNetAddConnection2W
  193. #else
  194. #define WNetAddConnection2  WNetAddConnection2A
  195. #endif // !UNICODE
  196.  
  197. DWORD APIENTRY
  198. WNetAddConnection3A(
  199.      HWND           hwndOwner,
  200.      LPNETRESOURCEA lpNetResource,
  201.      LPCSTR       lpPassword,
  202.      LPCSTR       lpUserName,
  203.      DWORD          dwFlags
  204.     );
  205. DWORD APIENTRY
  206. WNetAddConnection3W(
  207.      HWND           hwndOwner,
  208.      LPNETRESOURCEW lpNetResource,
  209.      LPCWSTR       lpPassword,
  210.      LPCWSTR       lpUserName,
  211.      DWORD          dwFlags
  212.     );
  213. #ifdef UNICODE
  214. #define WNetAddConnection3  WNetAddConnection3W
  215. #else
  216. #define WNetAddConnection3  WNetAddConnection3A
  217. #endif // !UNICODE
  218.  
  219. DWORD APIENTRY
  220. WNetCancelConnectionA(
  221.      LPCSTR lpName,
  222.      BOOL     fForce
  223.     );
  224. DWORD APIENTRY
  225. WNetCancelConnectionW(
  226.      LPCWSTR lpName,
  227.      BOOL     fForce
  228.     );
  229. #ifdef UNICODE
  230. #define WNetCancelConnection  WNetCancelConnectionW
  231. #else
  232. #define WNetCancelConnection  WNetCancelConnectionA
  233. #endif // !UNICODE
  234.  
  235. DWORD APIENTRY
  236. WNetCancelConnection2A(
  237.      LPCSTR lpName,
  238.      DWORD    dwFlags,
  239.      BOOL     fForce
  240.     );
  241. DWORD APIENTRY
  242. WNetCancelConnection2W(
  243.      LPCWSTR lpName,
  244.      DWORD    dwFlags,
  245.      BOOL     fForce
  246.     );
  247. #ifdef UNICODE
  248. #define WNetCancelConnection2  WNetCancelConnection2W
  249. #else
  250. #define WNetCancelConnection2  WNetCancelConnection2A
  251. #endif // !UNICODE
  252.  
  253. DWORD APIENTRY
  254. WNetGetConnectionA(
  255.      LPCSTR lpLocalName,
  256.      LPSTR  lpRemoteName,
  257.      LPDWORD  lpnLength
  258.     );
  259. DWORD APIENTRY
  260. WNetGetConnectionW(
  261.      LPCWSTR lpLocalName,
  262.      LPWSTR  lpRemoteName,
  263.      LPDWORD  lpnLength
  264.     );
  265. #ifdef UNICODE
  266. #define WNetGetConnection  WNetGetConnectionW
  267. #else
  268. #define WNetGetConnection  WNetGetConnectionA
  269. #endif // !UNICODE
  270.  
  271.  
  272. #if(WINVER >= 0x0400)
  273. DWORD APIENTRY
  274. WNetUseConnectionA(
  275.     HWND            hwndOwner,
  276.     LPNETRESOURCEA  lpNetResource,
  277.     LPCSTR        lpUserID,
  278.     LPCSTR        lpPassword,
  279.     DWORD           dwFlags,
  280.     LPSTR         lpAccessName,
  281.     LPDWORD         lpBufferSize,
  282.     LPDWORD         lpResult
  283.     );
  284. DWORD APIENTRY
  285. WNetUseConnectionW(
  286.     HWND            hwndOwner,
  287.     LPNETRESOURCEW  lpNetResource,
  288.     LPCWSTR        lpUserID,
  289.     LPCWSTR        lpPassword,
  290.     DWORD           dwFlags,
  291.     LPWSTR         lpAccessName,
  292.     LPDWORD         lpBufferSize,
  293.     LPDWORD         lpResult
  294.     );
  295. #ifdef UNICODE
  296. #define WNetUseConnection  WNetUseConnectionW
  297. #else
  298. #define WNetUseConnection  WNetUseConnectionA
  299. #endif // !UNICODE
  300.  
  301. DWORD APIENTRY
  302. WNetSetConnectionA(
  303.     LPCSTR    lpName,
  304.     DWORD       dwProperties,
  305.     LPVOID      pvValues
  306.     );
  307. DWORD APIENTRY
  308. WNetSetConnectionW(
  309.     LPCWSTR    lpName,
  310.     DWORD       dwProperties,
  311.     LPVOID      pvValues
  312.     );
  313. #ifdef UNICODE
  314. #define WNetSetConnection  WNetSetConnectionW
  315. #else
  316. #define WNetSetConnection  WNetSetConnectionA
  317. #endif // !UNICODE
  318. #endif /* WINVER >= 0x0400 */
  319.  
  320.  
  321. //
  322. //  Network Connection Dialogs.
  323. //
  324.  
  325. DWORD APIENTRY
  326. WNetConnectionDialog(
  327.     HWND  hwnd,
  328.     DWORD dwType
  329.     );
  330.  
  331. DWORD APIENTRY
  332. WNetDisconnectDialog(
  333.     HWND  hwnd,
  334.     DWORD dwType
  335.     );
  336.  
  337. #if(WINVER >= 0x0400)
  338. typedef struct _CONNECTDLGSTRUCTA{
  339.     DWORD cbStructure;       /* size of this structure in bytes */
  340.     HWND hwndOwner;          /* owner window for the dialog */
  341.     LPNETRESOURCEA lpConnRes;/* Requested Resource info    */
  342.     DWORD dwFlags;           /* flags (see below) */
  343.     DWORD dwDevNum;          /* number of devices connected to */
  344. } CONNECTDLGSTRUCTA, FAR *LPCONNECTDLGSTRUCTA;
  345. typedef struct _CONNECTDLGSTRUCTW{
  346.     DWORD cbStructure;       /* size of this structure in bytes */
  347.     HWND hwndOwner;          /* owner window for the dialog */
  348.     LPNETRESOURCEW lpConnRes;/* Requested Resource info    */
  349.     DWORD dwFlags;           /* flags (see below) */
  350.     DWORD dwDevNum;          /* number of devices connected to */
  351. } CONNECTDLGSTRUCTW, FAR *LPCONNECTDLGSTRUCTW;
  352. #ifdef UNICODE
  353. typedef CONNECTDLGSTRUCTW CONNECTDLGSTRUCT;
  354. typedef LPCONNECTDLGSTRUCTW LPCONNECTDLGSTRUCT;
  355. #else
  356. typedef CONNECTDLGSTRUCTA CONNECTDLGSTRUCT;
  357. typedef LPCONNECTDLGSTRUCTA LPCONNECTDLGSTRUCT;
  358. #endif // UNICODE
  359.  
  360. #define CONNDLG_RO_PATH     0x00000001 /* Resource path should be read-only    */
  361. #define CONNDLG_CONN_POINT  0x00000002 /* Netware -style movable connection point enabled */
  362. #define CONNDLG_USE_MRU     0x00000004 /* Use MRU combobox  */
  363. #define CONNDLG_HIDE_BOX    0x00000008 /* Hide persistent connect checkbox  */
  364.  
  365. /*
  366.  * NOTE:  Set at most ONE of the below flags.  If neither flag is set,
  367.  *        then the persistence is set to whatever the user chose during
  368.  *        a previous connection
  369.  */
  370. #define CONNDLG_PERSIST     0x00000010 /* Force persistent connection */
  371. #define CONNDLG_NOT_PERSIST 0x00000020 /* Force connection NOT persistent */
  372.  
  373. DWORD APIENTRY
  374. WNetConnectionDialog1A(
  375.     LPCONNECTDLGSTRUCTA lpConnDlgStruct
  376.     );
  377. DWORD APIENTRY
  378. WNetConnectionDialog1W(
  379.     LPCONNECTDLGSTRUCTW lpConnDlgStruct
  380.     );
  381. #ifdef UNICODE
  382. #define WNetConnectionDialog1  WNetConnectionDialog1W
  383. #else
  384. #define WNetConnectionDialog1  WNetConnectionDialog1A
  385. #endif // !UNICODE
  386.  
  387. typedef struct _DISCDLGSTRUCTA{
  388.     DWORD           cbStructure;      /* size of this structure in bytes */
  389.     HWND            hwndOwner;        /* owner window for the dialog */
  390.     LPSTR           lpLocalName;      /* local device name */
  391.     LPSTR           lpRemoteName;     /* network resource name */
  392.     DWORD           dwFlags;          /* flags */
  393. } DISCDLGSTRUCTA, FAR *LPDISCDLGSTRUCTA;
  394. typedef struct _DISCDLGSTRUCTW{
  395.     DWORD           cbStructure;      /* size of this structure in bytes */
  396.     HWND            hwndOwner;        /* owner window for the dialog */
  397.     LPWSTR          lpLocalName;      /* local device name */
  398.     LPWSTR          lpRemoteName;     /* network resource name */
  399.     DWORD           dwFlags;          /* flags */
  400. } DISCDLGSTRUCTW, FAR *LPDISCDLGSTRUCTW;
  401. #ifdef UNICODE
  402. typedef DISCDLGSTRUCTW DISCDLGSTRUCT;
  403. typedef LPDISCDLGSTRUCTW LPDISCDLGSTRUCT;
  404. #else
  405. typedef DISCDLGSTRUCTA DISCDLGSTRUCT;
  406. typedef LPDISCDLGSTRUCTA LPDISCDLGSTRUCT;
  407. #endif // UNICODE
  408.  
  409. #define DISC_UPDATE_PROFILE         0x00000001
  410. #define DISC_NO_FORCE               0x00000040
  411.  
  412. DWORD APIENTRY
  413. WNetDisconnectDialog1A(
  414.     LPDISCDLGSTRUCTA lpConnDlgStruct
  415.     );
  416. DWORD APIENTRY
  417. WNetDisconnectDialog1W(
  418.     LPDISCDLGSTRUCTW lpConnDlgStruct
  419.     );
  420. #ifdef UNICODE
  421. #define WNetDisconnectDialog1  WNetDisconnectDialog1W
  422. #else
  423. #define WNetDisconnectDialog1  WNetDisconnectDialog1A
  424. #endif // !UNICODE
  425. #endif /* WINVER >= 0x0400 */
  426.  
  427.  
  428. //
  429. //  Network Browsing.
  430. //
  431.  
  432. DWORD APIENTRY
  433. WNetOpenEnumA(
  434.      DWORD          dwScope,
  435.      DWORD          dwType,
  436.      DWORD          dwUsage,
  437.      LPNETRESOURCEA lpNetResource,
  438.      LPHANDLE       lphEnum
  439.     );
  440. DWORD APIENTRY
  441. WNetOpenEnumW(
  442.      DWORD          dwScope,
  443.      DWORD          dwType,
  444.      DWORD          dwUsage,
  445.      LPNETRESOURCEW lpNetResource,
  446.      LPHANDLE       lphEnum
  447.     );
  448. #ifdef UNICODE
  449. #define WNetOpenEnum  WNetOpenEnumW
  450. #else
  451. #define WNetOpenEnum  WNetOpenEnumA
  452. #endif // !UNICODE
  453.  
  454. DWORD APIENTRY
  455. WNetEnumResourceA(
  456.      HANDLE  hEnum,
  457.      LPDWORD lpcCount,
  458.      LPVOID  lpBuffer,
  459.      LPDWORD lpBufferSize
  460.     );
  461. DWORD APIENTRY
  462. WNetEnumResourceW(
  463.      HANDLE  hEnum,
  464.      LPDWORD lpcCount,
  465.      LPVOID  lpBuffer,
  466.      LPDWORD lpBufferSize
  467.     );
  468. #ifdef UNICODE
  469. #define WNetEnumResource  WNetEnumResourceW
  470. #else
  471. #define WNetEnumResource  WNetEnumResourceA
  472. #endif // !UNICODE
  473.  
  474. DWORD APIENTRY
  475. WNetCloseEnum(
  476.     HANDLE   hEnum
  477.     );
  478.  
  479.  
  480.  
  481. //
  482. //  Universal Naming.
  483. //
  484.  
  485. #define UNIVERSAL_NAME_INFO_LEVEL   0x00000001
  486. #define REMOTE_NAME_INFO_LEVEL      0x00000002
  487.  
  488. typedef struct  _UNIVERSAL_NAME_INFOA {
  489.     LPSTR    lpUniversalName;
  490. }UNIVERSAL_NAME_INFOA, *LPUNIVERSAL_NAME_INFOA;
  491. typedef struct  _UNIVERSAL_NAME_INFOW {
  492.     LPWSTR   lpUniversalName;
  493. }UNIVERSAL_NAME_INFOW, *LPUNIVERSAL_NAME_INFOW;
  494. #ifdef UNICODE
  495. typedef UNIVERSAL_NAME_INFOW UNIVERSAL_NAME_INFO;
  496. typedef LPUNIVERSAL_NAME_INFOW LPUNIVERSAL_NAME_INFO;
  497. #else
  498. typedef UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO;
  499. typedef LPUNIVERSAL_NAME_INFOA LPUNIVERSAL_NAME_INFO;
  500. #endif // UNICODE
  501.  
  502. typedef struct  _REMOTE_NAME_INFOA {
  503.     LPSTR    lpUniversalName;
  504.     LPSTR    lpConnectionName;
  505.     LPSTR    lpRemainingPath;
  506. }REMOTE_NAME_INFOA, *LPREMOTE_NAME_INFOA;
  507. typedef struct  _REMOTE_NAME_INFOW {
  508.     LPWSTR   lpUniversalName;
  509.     LPWSTR   lpConnectionName;
  510.     LPWSTR   lpRemainingPath;
  511. }REMOTE_NAME_INFOW, *LPREMOTE_NAME_INFOW;
  512. #ifdef UNICODE
  513. typedef REMOTE_NAME_INFOW REMOTE_NAME_INFO;
  514. typedef LPREMOTE_NAME_INFOW LPREMOTE_NAME_INFO;
  515. #else
  516. typedef REMOTE_NAME_INFOA REMOTE_NAME_INFO;
  517. typedef LPREMOTE_NAME_INFOA LPREMOTE_NAME_INFO;
  518. #endif // UNICODE
  519.  
  520. DWORD APIENTRY
  521. WNetGetUniversalNameA(
  522.      LPCSTR lpLocalPath,
  523.      DWORD    dwInfoLevel,
  524.      LPVOID   lpBuffer,
  525.      LPDWORD  lpBufferSize
  526.      );
  527. DWORD APIENTRY
  528. WNetGetUniversalNameW(
  529.      LPCWSTR lpLocalPath,
  530.      DWORD    dwInfoLevel,
  531.      LPVOID   lpBuffer,
  532.      LPDWORD  lpBufferSize
  533.      );
  534. #ifdef UNICODE
  535. #define WNetGetUniversalName  WNetGetUniversalNameW
  536. #else
  537. #define WNetGetUniversalName  WNetGetUniversalNameA
  538. #endif // !UNICODE
  539.  
  540. //
  541. //  Authentication and Logon/Logoff.
  542. //
  543.  
  544. DWORD APIENTRY
  545. WNetGetUserA(
  546.      LPCSTR  lpName,
  547.      LPSTR   lpUserName,
  548.      LPDWORD   lpnLength
  549.     );
  550. DWORD APIENTRY
  551. WNetGetUserW(
  552.      LPCWSTR  lpName,
  553.      LPWSTR   lpUserName,
  554.      LPDWORD   lpnLength
  555.     );
  556. #ifdef UNICODE
  557. #define WNetGetUser  WNetGetUserW
  558. #else
  559. #define WNetGetUser  WNetGetUserA
  560. #endif // !UNICODE
  561.  
  562.  
  563.  
  564.  
  565. //
  566. // Other.
  567. //
  568.  
  569. #if(WINVER >= 0x0400)
  570. #define WNFMT_MULTILINE         0x01
  571. #define WNFMT_ABBREVIATED       0x02
  572. #define WNFMT_INENUM            0x10
  573. #define WNFMT_CONNECTION        0x20
  574. #endif /* WINVER >= 0x0400 */
  575.  
  576.  
  577. #if(WINVER >= 0x0400)
  578. DWORD APIENTRY
  579. WNetGetProviderNameA(
  580.     DWORD   dwNetType,
  581.     LPSTR lpProviderName,
  582.     LPDWORD lpBufferSize
  583.     );
  584. DWORD APIENTRY
  585. WNetGetProviderNameW(
  586.     DWORD   dwNetType,
  587.     LPWSTR lpProviderName,
  588.     LPDWORD lpBufferSize
  589.     );
  590. #ifdef UNICODE
  591. #define WNetGetProviderName  WNetGetProviderNameW
  592. #else
  593. #define WNetGetProviderName  WNetGetProviderNameA
  594. #endif // !UNICODE
  595.  
  596. typedef struct _NETINFOSTRUCT{
  597.     DWORD cbStructure;
  598.     DWORD dwProviderVersion;
  599.     DWORD dwStatus;
  600.     DWORD dwCharacteristics;
  601.     DWORD dwHandle;
  602.     WORD  wNetType;
  603.     DWORD dwPrinters;
  604.     DWORD dwDrives;
  605. } NETINFOSTRUCT, FAR *LPNETINFOSTRUCT;
  606.  
  607. #define NETINFO_DLL16       0x00000001  /* Provider running as 16 bit Winnet Driver */
  608. #define NETINFO_DISKRED     0x00000004  /* Provider requires disk redirections to connect */
  609. #define NETINFO_PRINTERRED  0x00000008  /* Provider requires printer redirections to connect */
  610.  
  611. DWORD APIENTRY
  612. WNetGetNetworkInformationA(
  613.     LPCSTR          lpProvider,
  614.     LPNETINFOSTRUCT   lpNetInfoStruct
  615.     );
  616. DWORD APIENTRY
  617. WNetGetNetworkInformationW(
  618.     LPCWSTR          lpProvider,
  619.     LPNETINFOSTRUCT   lpNetInfoStruct
  620.     );
  621. #ifdef UNICODE
  622. #define WNetGetNetworkInformation  WNetGetNetworkInformationW
  623. #else
  624. #define WNetGetNetworkInformation  WNetGetNetworkInformationA
  625. #endif // !UNICODE
  626.  
  627. //
  628. //  User Profiles.
  629. //
  630.  
  631. typedef UINT (FAR PASCAL *PFNGETPROFILEPATHA) (
  632.     LPCSTR    pszUsername,
  633.     LPSTR     pszBuffer,
  634.     UINT        cbBuffer
  635.     );
  636. typedef UINT (FAR PASCAL *PFNGETPROFILEPATHW) (
  637.     LPCWSTR    pszUsername,
  638.     LPWSTR     pszBuffer,
  639.     UINT        cbBuffer
  640.     );
  641. #ifdef UNICODE
  642. #define PFNGETPROFILEPATH  PFNGETPROFILEPATHW
  643. #else
  644. #define PFNGETPROFILEPATH  PFNGETPROFILEPATHA
  645. #endif // !UNICODE
  646.  
  647. typedef UINT (FAR PASCAL *PFNRECONCILEPROFILEA) (
  648.     LPCSTR    pszCentralFile,
  649.     LPCSTR    pszLocalFile,
  650.     DWORD       dwFlags
  651.     );
  652. typedef UINT (FAR PASCAL *PFNRECONCILEPROFILEW) (
  653.     LPCWSTR    pszCentralFile,
  654.     LPCWSTR    pszLocalFile,
  655.     DWORD       dwFlags
  656.     );
  657. #ifdef UNICODE
  658. #define PFNRECONCILEPROFILE  PFNRECONCILEPROFILEW
  659. #else
  660. #define PFNRECONCILEPROFILE  PFNRECONCILEPROFILEA
  661. #endif // !UNICODE
  662.  
  663. #define RP_LOGON    0x01        /* if set, do for logon, else for logoff */
  664. #define RP_INIFILE  0x02        /* if set, reconcile .INI file, else reg. hive */
  665.  
  666.  
  667. //
  668. //  Policies.
  669. //
  670.  
  671. typedef BOOL (FAR PASCAL *PFNPROCESSPOLICIESA) (
  672.     HWND        hwnd,
  673.     LPCSTR    pszPath,
  674.     LPCSTR    pszUsername,
  675.     LPCSTR    pszComputerName,
  676.     DWORD       dwFlags
  677.     );
  678. typedef BOOL (FAR PASCAL *PFNPROCESSPOLICIESW) (
  679.     HWND        hwnd,
  680.     LPCWSTR    pszPath,
  681.     LPCWSTR    pszUsername,
  682.     LPCWSTR    pszComputerName,
  683.     DWORD       dwFlags
  684.     );
  685. #ifdef UNICODE
  686. #define PFNPROCESSPOLICIES  PFNPROCESSPOLICIESW
  687. #else
  688. #define PFNPROCESSPOLICIES  PFNPROCESSPOLICIESA
  689. #endif // !UNICODE
  690.  
  691. #define PP_DISPLAYERRORS    0x01    /* if set, display error messages, else fail silently if error */
  692. #endif /* WINVER >= 0x0400 */
  693.  
  694.  
  695. //
  696. //  Error handling.
  697. //
  698.  
  699. DWORD APIENTRY
  700. WNetGetLastErrorA(
  701.      LPDWORD    lpError,
  702.      LPSTR    lpErrorBuf,
  703.      DWORD      nErrorBufSize,
  704.      LPSTR    lpNameBuf,
  705.      DWORD      nNameBufSize
  706.     );
  707. DWORD APIENTRY
  708. WNetGetLastErrorW(
  709.      LPDWORD    lpError,
  710.      LPWSTR    lpErrorBuf,
  711.      DWORD      nErrorBufSize,
  712.      LPWSTR    lpNameBuf,
  713.      DWORD      nNameBufSize
  714.     );
  715. #ifdef UNICODE
  716. #define WNetGetLastError  WNetGetLastErrorW
  717. #else
  718. #define WNetGetLastError  WNetGetLastErrorA
  719. #endif // !UNICODE
  720.  
  721. //
  722. //  STATUS CODES
  723. //
  724.  
  725. // General
  726.  
  727. #define WN_SUCCESS                      NO_ERROR
  728. #define WN_NO_ERROR                     NO_ERROR
  729. #define WN_NOT_SUPPORTED                ERROR_NOT_SUPPORTED
  730. #define WN_CANCEL                       ERROR_CANCELLED
  731. #define WN_RETRY                        ERROR_RETRY
  732. #define WN_NET_ERROR                    ERROR_UNEXP_NET_ERR
  733. #define WN_MORE_DATA                    ERROR_MORE_DATA
  734. #define WN_BAD_POINTER                  ERROR_INVALID_ADDRESS
  735. #define WN_BAD_VALUE                    ERROR_INVALID_PARAMETER
  736. #define WN_BAD_USER                     ERROR_BAD_USERNAME
  737. #define WN_BAD_PASSWORD                 ERROR_INVALID_PASSWORD
  738. #define WN_ACCESS_DENIED                ERROR_ACCESS_DENIED
  739. #define WN_FUNCTION_BUSY                ERROR_BUSY
  740. #define WN_WINDOWS_ERROR                ERROR_UNEXP_NET_ERR
  741. #define WN_OUT_OF_MEMORY                ERROR_NOT_ENOUGH_MEMORY
  742. #define WN_NO_NETWORK                   ERROR_NO_NETWORK
  743. #define WN_EXTENDED_ERROR               ERROR_EXTENDED_ERROR
  744. #define WN_BAD_LEVEL                    ERROR_INVALID_LEVEL
  745. #define WN_BAD_HANDLE                   ERROR_INVALID_HANDLE
  746. #if(WINVER >= 0x0400)
  747. #define WN_NOT_INITIALIZING             ERROR_ALREADY_INITIALIZED
  748. #define WN_NO_MORE_DEVICES              ERROR_NO_MORE_DEVICES
  749. #endif /* WINVER >= 0x0400 */
  750.  
  751. // Connection
  752.  
  753. #define WN_NOT_CONNECTED                ERROR_NOT_CONNECTED
  754. #define WN_OPEN_FILES                   ERROR_OPEN_FILES
  755. #define WN_DEVICE_IN_USE                ERROR_DEVICE_IN_USE
  756. #define WN_BAD_NETNAME                  ERROR_BAD_NET_NAME
  757. #define WN_BAD_LOCALNAME                ERROR_BAD_DEVICE
  758. #define WN_ALREADY_CONNECTED            ERROR_ALREADY_ASSIGNED
  759. #define WN_DEVICE_ERROR                 ERROR_GEN_FAILURE
  760. #define WN_CONNECTION_CLOSED            ERROR_CONNECTION_UNAVAIL
  761. #define WN_NO_NET_OR_BAD_PATH           ERROR_NO_NET_OR_BAD_PATH
  762. #define WN_BAD_PROVIDER                 ERROR_BAD_PROVIDER
  763. #define WN_CANNOT_OPEN_PROFILE          ERROR_CANNOT_OPEN_PROFILE
  764. #define WN_BAD_PROFILE                  ERROR_BAD_PROFILE
  765. #define WN_BAD_DEV_TYPE                 ERROR_BAD_DEV_TYPE
  766. #define WN_DEVICE_ALREADY_REMEMBERED    ERROR_DEVICE_ALREADY_REMEMBERED
  767.  
  768. // Enumeration
  769.  
  770. #define WN_NO_MORE_ENTRIES              ERROR_NO_MORE_ITEMS
  771. #define WN_NOT_CONTAINER                ERROR_NOT_CONTAINER
  772.  
  773. #if(WINVER >= 0x0400)
  774. // Authentication
  775.  
  776. #define WN_NOT_AUTHENTICATED            ERROR_NOT_AUTHENTICATED
  777. #define WN_NOT_LOGGED_ON                ERROR_NOT_LOGGED_ON
  778. #define WN_NOT_VALIDATED                ERROR_NO_LOGON_SERVERS
  779. #endif /* WINVER >= 0x0400 */
  780.  
  781.  
  782. //
  783. //  For Shell
  784. //
  785.  
  786. #if(WINVER >= 0x0400)
  787. typedef struct _NETCONNECTINFOSTRUCT{
  788.     DWORD cbStructure;
  789.     DWORD dwFlags;
  790.     DWORD dwSpeed;
  791.     DWORD dwDelay;
  792.     DWORD dwOptDataSize;
  793. } NETCONNECTINFOSTRUCT,  *LPNETCONNECTINFOSTRUCT;
  794.  
  795. #define WNCON_FORNETCARD        0x00000001
  796. #define WNCON_NOTROUTED         0x00000002
  797. #define WNCON_SLOWLINK          0x00000004
  798. #define WNCON_DYNAMIC           0x00000008
  799.  
  800. DWORD APIENTRY
  801. MultinetGetConnectionPerformanceA(
  802.         LPNETRESOURCEA lpNetResource,
  803.         LPNETCONNECTINFOSTRUCT lpNetConnectInfoStruct
  804.         );
  805. DWORD APIENTRY
  806. MultinetGetConnectionPerformanceW(
  807.         LPNETRESOURCEW lpNetResource,
  808.         LPNETCONNECTINFOSTRUCT lpNetConnectInfoStruct
  809.         );
  810. #ifdef UNICODE
  811. #define MultinetGetConnectionPerformance  MultinetGetConnectionPerformanceW
  812. #else
  813. #define MultinetGetConnectionPerformance  MultinetGetConnectionPerformanceA
  814. #endif // !UNICODE
  815. #endif /* WINVER >= 0x0400 */
  816.  
  817. #ifdef __cplusplus
  818. }
  819. #endif
  820.  
  821. #pragma option -b.
  822. #endif  // _WINNETWK_
  823.